(Some headers removed to prevent spam scrapers. Reposted with permission.) Received: by 2002:a67:8cc3:0:0:0:0:0 with SMTP id o186csp2625vsd; Wed, 20 Mar 2019 14:28:20 -0700 (PDT) X-Received: by 2002:a19:ae11:: with SMTP id f17mr29172lfc.12.1553117300327; Wed, 20 Mar 2019 14:28:20 -0700 (PDT) X-Received: by 2002:a19:48d5:: with SMTP id v204mr21439lfa.70.1553117299292; Wed, 20 Mar 2019 14:28:19 -0700 (PDT) MIME-Version: 1.0 From: "William Tanksley, Jr" Date: Wed, 20 Mar 2019 14:27:52 -0700 Subject: The Unix Philosophy To: "Samuel A. Falvo II" Content-Type: text/plain; charset="UTF-8" The Unix Philosophy is to make many small programs (which are made enormous over time) which do one thing (that nobody needs) well (and the things they actually need, barely acceptably), (and then outputs the result in a format that none of the other Unix programs can accommodate except with regexes that only coincidentally work with the dataset you're currently testing with). I offer for example: - xargs, which hates you if spaces get in the input, and hates you forever if apostrophes get into it. The GNU version makes it barely acceptable. - everything that accepts filenames if some idiot added a newline to a filename. BECAUSE YOU CAN. BTW, the "idiot" is probably a script, and now everything's broken. - GNU Parallel, which fixes most of xargs problems but adds the problem of parsing all quoted strings. - md5sum (and all the other *sum programs), which have a hilariously delicate output format involving space and an optional asterisk. I shouldn't include exiftool, which does not follow the Unix Philosophy, except that it is what's giving me the most pain right now.